<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        // 创建对象的方式
		// 4.自定义构造函数  Object Array
		// 什么是构造函数？
		// 构造函数其实也是函数,但是通常用来初始化对象
		// 并且和new关键字同时出现
		
		// new是用来创建对象的
		// 构造函数时用来初始化对象的(给对象新增成员)
		
		// 构造函数名,首字母要大写!!!以示区分
		function Person() {
			// 默认隐含操作,把刚才用new新创建出来的对象赋值给this
			this.name = "尼古拉斯凯奇";
			this.age = 50;
			this.sayHello = function () {
				console.log("Hey man");
			}
			// 如果这里写其他代码,会执行吗？肯定会
			return null;
		}
		var p = new Person();//new Object();
		console.log(p);
		p.sayHello();
		
		// 构造函数的执行过程
		// 1.使用new关键字创建对象
		// 2.调用构造函数,把新创建出来的对象赋值给构造函数内的this
		// 3.在构造函数内使用this为新创建出来的对象新增成员
		// 4.默认返回新创建的这个对象(普通的函数，如果不写返回语句，会、
		// 返回undefined)
		
		// 构造函数的返回值
		// 1.如果不写返回值,默认返回的是新创建出来的对象(一般都不会去写这个return语句)
		// 2.如果我们自己写return语句 return的是空值(return；),或者是基本类型的值或者null,都会默认返回新创建出来的对象
		// 3.如果返回的是object类型的值,将不会返回刚才创建的对象,取而代之的是return后面的值
		
		
    </script>
</head>
<body>

</body>
</html>